package org.dolphin.dao;

import java.io.Serializable;
import java.util.List;
import org.dolphin.base.bean.FlatProductVO;
import org.dolphin.entity.inventory.Product;
import org.hibernate.criterion.Order;

public interface ProductDao {
  public Product fetchProduct(Serializable id);

  public Product fetchProduct(Serializable id, boolean fetchJoinProductCategory);

  public Product getProduct(String name);

  public Product getProduct(String name, Serializable excludedId);

  public List<FlatProductVO> getProducts(int firstResult, int maxResults, List<Order> orders);

  public Long getProductsCount();

  public Product loadProduct(Serializable id);

  public void saveProduct(Product product);

  public void updateProduct(Product product);
}
